package com.xjy.system.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Version;
import javax.validation.constraints.NotBlank;

import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 押金基础信息对象 sys_deposit
 *
 * @author xjy
 * @date 2022-03-11
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sys_deposit")
@Entity
@SQLDelete(sql = "update sys_deposit set del_flag=1 where id=? and version=?")
@Where(clause = "del_flag=0")
public class SysDeposit implements Serializable {

    private static final long serialVersionUID=1L;

	/**
	 * $column.columnComment
	 */
	@TableId(value = "id")
	@Id
	private Long id;
	/** 项目id */
	private Long projId;

	/** 项目名称 */
	private String projName;

	/** 合同id */
	private Long contractId;

	/** 结算项目id */
	private Long resultProjId;

	/** 押金单据编号 */
	private String depNo;

	/** 合同名称 */
	private String contractName;

	/** 押金收取/支付之后的退回单据编号 */
	private String depNoBack;

	/** 押金大类:0：收取押金，1：支付押金 */
	private Integer depMaxType;

	/** 结算项目名称 */
	private String resultProjName;

	/** 押金小类：收取：（0：收取，1：清退）；支付：（0：支付，1：退回） */
	private Integer depMinType;

	/** 押金收取方 */
	private String depCollecor;
	/** 对方银行账户名称 */
	private String colBankName;

	/** 对方银行账户开户行 */
	private String colBank;

	/** 对方银行账户号码 */
	private String colBankNo;

	/** 押金支付方 */
	private String depPaior;

	/** 押金内容 */
	private String depContent;

	/** 押金金额 */
	private BigDecimal depAmt;

	/** 押金日期 */
	private Date depTime;

	/** 收取/支付之后进行清退/退回操作，剩余的金额 */
	private BigDecimal depBalance;

	/** 押金经办人 */
	private String depHandler;

	/** 经办人id */
	private Long depHandlerId;


	/** 押金收据编号 */
	private String depColNo;

	/**押金收据影像名称*/
	private String depColImgName;

	/** 押金收据影像 */
	private String depColImg;

	/** 押金条状态:0：未知；收取：（1：收回）；支付：（2：退还） */
	private Integer depStatus;

	/** 押金收款/支付账户名称 */
	private String depColpayAccount;

	/** 预留字段1 */
	private String reserveOne;

	/** 预留字段2 */
	private String reserveTwo;

	/** 预留字段3 */
	private String reserveThree;

	/** 押金收款/支付账户号码 */
	private String depColpayNo;

	/** 创建时间 */
	@TableField(fill = FieldFill.INSERT)
	private Date createTime;

	/** 修改时间 */
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private Date updateTime;

	/** 删除状态 0. 正常 1. 删除 */
	@TableLogic
	private Integer delFlag;

	/** 押金收支方式:0：现金，1：银行（默认：银行） */
	private Integer depColpayType;

	/** 备注：扎帐说明 */
	private String remarks;

	/** 押金收款/支付账户ID */
	private Long depPayaccountId;

	/** 押金收款/支付账户开户行 */
	private String depColpayBank;

	/** 押金收取方id */
	private Long depCollecorId;

	/** 押金支付方id */
	private Long depPaiorId;

	/** 审核状态 0：未审核（默认）；1：审核 */
	private Boolean auditStatus;

	/** $column.columnComment */
	@Version
	private Long version;

}
